____ _ _ _ _
| _ \ ___ | |_ (_) _ __ ___ __| | (_) __ _
| |_) | / _ \ | __| | | | '_ \ / _ \ / _| | | | / _ |
| _ < | __/ | |_ | | | |_) | | __/ | (_| | | | | (_| |
|_| \_\ \___| \__| |_| | .__/ \___| \__,_| |_| \__,_|
|_|
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―
Debugging
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
top
Il mwcgdebugging (o semplicemente mwcwdebug) o mwdadepurazione, in mwdqinformatica, nell'ambito dello mwdgsviluppo software, indica l'attivitΓ che consiste nell'individuazione e correzione da parte del mwdwprogrammatore di uno o piΓΉ errori (mweabug) rilevati nel mweqsoftware, direttamente in fase di mwegprogrammazione oppure a seguito della fase di mwewmwfatesting o dell'utilizzo finale del mwfqprogramma stesso.
L'attivitΓ di debug Γ¨ una delle operazioni piΓΉ importanti e difficili per la messa a punto di un mwfwprogramma, spesso estremamente complicata per la complessitΓ dei software in uso e delicata per il pericolo di introdurre nuovi errori o comportamenti difformi da quelli desiderati nel tentativo di correggere quelli per cui si Γ¨ svolta l'attivitΓ di mwgadebug.
Contents
β’ Commenti
β’ Voci correlate
β’ Altri progetti
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Operazioni di base
Sebbene ogni sessione di debug sia unica e costituisca una storia a sΓ©, alcuni principi generici sono applicabili a tutte le sessioni di debug. In particolare, per il debug di applicazioni software, in genere si possono riconoscere cinque fasi nel debug:
β’ identificazione del bug
β’ individuazione del componente in cui Γ¨ presente il bug
β’ individuazione della causa del bug
β’ progettazione di una correzione per il bug
β’ implementazione e testing della suddetta correzione
Rilevazione dell'errore
Mentre gli mwjqerrori di sintassi sono tipicamente evidenziati dall'mwjgIDE, alla fine della stesura del codice il programmatore opera una seconda fase di test valutando se l'output del programma è quello atteso compilando/interpretando ed eseguendo il codice. All'eventuale rilevazione dellmwjw'mwkaerrore di semantica e di mwkqruntime segue la fase di mwkgdebugging, ossia di individuazione della parte di mwkwsoftware, a volte molto complesso, nella quale si annida l'errore. Spesso tale operazione viene svolta dal programmatore di pari passo con la stesura del codice stesso, testando continuamente il codice ed evitando così l'accumulo degli errori.
Questa attivitΓ Γ¨ supportata da programmi specifici (mwlqdebugger) messi a disposizione dall'IDE grazie anche all'uso di mwlgbreakpoint su linee di codice e dai messaggi di mwlwstandard error emessi nei mwmafile di mwmqlog (es. rilevamento mwmgeccezioni nelle console dell'IDE), che indicano e mostrano allo mwmwsviluppatore l'esecuzione, mwnaistruzione per istruzione, del programma, permettendo nel contempo l'analisi dei dati trattati dal programma stesso. In assenza di tali strumenti per le attivitΓ di mwnqdebugging, si ricorre alla piΓΉ semplice, ma anche meno efficace tecnica di stampare a mwngvideo o su mwnwfile le istruzioni che il programma sta eseguendo, inserendo a tal scopo nel codice delle istruzioni di mwoadebug che evidenzino il punto di arrivo dell'esecuzione del programma fino all'errore. Sempre a questo scopo, il programmatore puΓ², con l'ausilio dei mwoqcommenti, far eseguire solo alcune parti del codice o al contrario non far eseguire particolari parti del codice, sospette di causare l'errore. Una volta individuato l'errore nel codice il programmatore corregge l'errore in maniera iterativa finchΓ© il programma non fa ciΓ² che Γ¨ desiderato.
Una terza fase di debug Γ¨ quella che il programmatore deve risolvere quando il software prodotto Γ¨ stato mandato in fase di mwowtesting o mwpacollaudo al rispettivo team ed Γ¨ stato rimandato indietro con la lista dei difetti riscontrati; in genere in questi casi molto spesso sono presenti errori nella stesura o interpretazione delle specifiche rispetto a ciΓ² che Γ¨ realmente desiderato senza andare in errore.
Una quarta fase di debug puΓ² avvenire quando in fase di utilizzo del programma da parte dell'utente finale questi riscontra delle anomalie; in genere in questi casi si ingenera un errore con relativo messaggio che viene inviato tramite mwpgInternet alla casa produttrice del software che aggiornerΓ periodicamente con nuove mwpwrelease senza errori o mwqaaggiornamenti il prodotto (es. mwqqMicrosoft Windows).
Accorgimenti per accelerare il processo di debug
Corretto atteggiamento mentale
Γ necessario fare autocritica, e accettare il fatto che il programma non si comporta come dovrebbe e che si Γ¨ fatto un errore, cosa del tutto normale e frequente in fase di sviluppo; se tutto fosse stato previsto e non ci fossero errori, il programma funzionerebbe correttamente, ma spesso questo risultato non si ottiene quasi mai alla prima stesura del codice, ma solo per successive modifiche e correzioni. Tale atteggiamento mentale incrementa significativamente la possibilitΓ di trovare e risolvere dei bug.
Usare file di log
Oltre all'uso della console dell'IDE Γ¨ opportuno creare uno o piΓΉ mwrwfile di log che puΓ² risultare molto utile per verificare se il programma funziona come previsto, e cosa succede prima, dopo e durante il verificarsi del malfunzionamento.
Fare attenzione all'input fornito al programma
Tutti gli mwsginput forniti dall'utente devono essere validati prima mwswsintatticamente e successivamente anche mwtasemanticamente dal programma prima di essere elaborati. CiΓ² migliora anche la sicurezza del programma.
Memorizzare le tipologie di errori
Nel caso si siano giΓ scritti dei programmi simili e ci si sia trovati a bug simili a quello attuale, Γ¨ buona norma, sulla scorta dell'esperienza, cercare di ricordare l'errore commesso e la soluzione adottata.
Accorgimenti per ridurre la necessitΓ di debug
Disegno del codice
Disegnare accuratamente le mwugstrutture dati e le funzioni nella mwuwprogrammazione strutturata e le mwvaclassi in quella mwvqorientata agli oggetti Γ¨ il sistema migliore per ridurre gli errori nel codice e nel facilitare l'individuazione dell'errore nel caso il programma non funzioni correttamente.
LeggibilitΓ del codice
L'utilizzo di convenzioni chiare per i nomi delle mwwavariabili, mwwqfunzioni, classi, mwwgmetodi e costanti, così come quello di nomi parlanti, ovvero che rendano chiaro l'utilizzo di una componente e, soprattutto, evitare di riutilizzare la stessa componente per scopi diversi, rende più chiaro e leggibile il codice anche a fronte di una ricerca di errori.
Commenti
I commenti sono fondamentali, soprattutto se il codice viene scritto a piΓΉ mani. In particolare, il commento deve dare un valore aggiunto all'istruzione. Ad esempio, se l'istruzione Γ¨
lordo = tara + netto ;
non ha senso scrivere un commento come
/* il peso lordo Γ¨ uguale a quello netto piΓΉ la tara */
perchΓ© si evince giΓ dal nome delle variabili. Un commento come
/* "tara" Γ¨ una costante definita nel file costanti.php */
Γ¨ sicuramente molto piΓΉ utile.
Voci correlate
β’ mwzgBug
β’ mwaaDebugger
β’ mwagTest strutturale
β’ mwbaSistema di sviluppo
β’ mwbgTroubleshooting
Altri progetti
Altri progetti
β’ Wikimedia Commons
β’ Wikimedia Commons contiene immagini o altri file sul debugging
Collegamenti esterni
β’ citerefvocabolario-treccanidebugging, su Vocabolario Treccani, Istituto dell'Enciclopedia Italiana.
⒠citerefbritannica-com(EN) debugging, su Enciclopedia Britannica, Encyclopædia Britannica, Inc.
β’ mwdq(EN) Guida a un debug rapido, su heather.cs.ucdavis.edu.